System.Nullable<T> , struktura

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Klasa Nullable reprezentuje typ wartości, który można przypisać .null

Typ jest określany jako dopuszczający wartość null, jeśli można przypisać wartość lub można przypisać nullwartość , co oznacza, że typ nie ma żadnej wartości. Domyślnie wszystkie typy odwołań, takie jak String, mają wartość null, ale wszystkie typy wartości, takie jak Int32, nie są.

W językach C# i Visual Basic należy oznaczyć typ wartości jako dopuszczaną do wartości null przy użyciu ? notacji po typie wartości. Na przykład int? w języku C# lub Integer? Visual Basic deklaruje typ wartości całkowitej, który można przypisać null.

Struktura Nullable<T> obsługuje używanie tylko typu wartości jako typu dopuszczanego do wartości null, ponieważ typy referencyjne są dopuszczane do wartości null zgodnie z projektem.

Klasa Nullable zapewnia dodatkową obsługę Nullable<T> struktury. Klasa Nullable obsługuje uzyskiwanie bazowego typu typu dopuszczanego do wartości null, a operacje porównania i równości dla par typów dopuszczalnych wartości null, których typ wartości bazowej nie obsługuje ogólnych operacji porównywania i równości.

Właściwości podstawowe

Dwa podstawowe elementy Nullable<T> struktury to HasValue właściwości i Value . HasValue Jeśli właściwość Nullable<T> obiektu to true, można uzyskać dostęp do wartości obiektu za Value pomocą właściwości . HasValue Jeśli właściwość to false, wartość obiektu jest niezdefiniowana i próba uzyskania dostępu do Value właściwości zgłasza błąd InvalidOperationException.

Boxing and unboxing (Boks i rozpakowywanie)

W przypadku pola typu dopuszczalnego do wartości null środowisko uruchomieniowe języka wspólnego automatycznie pole wyboru wartości bazowej Nullable<T> obiektu, a nie Nullable<T> samego obiektu. Oznacza to, że jeśli HasValue właściwość to true, zawartość Value właściwości jest w polu. Gdy podstawowa wartość typu dopuszczanego do wartości null jest rozpakowane, środowisko uruchomieniowe języka wspólnego tworzy nową Nullable<T> strukturę zainicjowaną dla bazowej wartości.

HasValue Jeśli właściwość typu dopuszczającego wartość null to false, wynikiem operacji boxingu jest null. W związku z tym, jeśli typ dopuszczający wartość null jest przekazywany do metody, która oczekuje argumentu obiektu, ta metoda musi być przygotowana do obsługi przypadku, w którym argument to null. Gdy null środowisko uruchomieniowe języka wspólnego tworzy nową Nullable<T> strukturę i inicjuje jej HasValue właściwość na .false

Składniki środowiska uruchomieniowego systemu Windows

Typ można dołączyć Nullable<T> jako element członkowski struktury wyeksportowanej w bibliotece WinMD.